查看原文
其他

精通Linux系列七: 文件创建和编辑(为什么命令行VIM比idea更好用)

拾叁 更AI 2023-10-21

点击关注公众号,AI&编程干货及时送达   

命令含义
nano包含在流行的Linux发行版中的简单文本编辑器。
emacs自由软件基金会的文本编辑器。
vim文本编辑器,是Unix的vi的扩展。

要在Linux中做得更多,你必须熟练掌握其中一个文本编辑器。主要的三个编辑器是nano,自由软件基金会的emacs和vim,后者是Unix编辑器vi的后继者。全面教授这些编辑器超出了本书的范围,但它们都有在线教程,我们在[表1]中列出了常见的操作。要编辑文件,运行以下任何一个命令:

→ nano 我的文件
→ emacs 我的文件
→ vim 我的文件

如果我的文件不存在,它会自动创建。

如果你需要与Microsoft Windows系统共享文件,Linux还有很好的用于编辑Microsoft Office文档的程序:LibreOffice(所有文档),abiword(仅Word),和gnumeric(仅Excel)。这些程序可能已经包含在你的发行版中,或者你可以通过网络搜索轻松找到它们。

快速创建文件

你可以使用touch命令快速创建一个空文件(以便稍后编辑):

→ touch 新文件

或者使用echo -n命令(参见[“文件属性”]):

→ echo -n > 新文件2

或者通过重定向程序的输出到新文件中写入数据(参见[“输入/输出重定向”]):

→ echo 任何内容 > 新文件3

默认编辑器

各种Linux程序在必要时会运行一个编辑器,通常默认的编辑器是nano或vim。例如,你的电子邮件程序可能调用一个编辑器来编写新消息,而less在你键入“v”时会调用一个编辑器。但是,如果你想要一个不同的默认编辑器怎么办呢?将环境变量VISUALEDITOR设置为你选择的编辑器,例如:

→ EDITOR=emacs
→ VISUAL=emacs
→ export EDITOR VISUAL

由于不同的程序检查一个或另一个变量,所以需要这两个变量。如果你想要永久设定你的选择,就在你的*~/.bash_profile*启动文件中设置EDITORVISUAL。只要它接受文件名作为参数,任何程序都可以设为你的默认编辑器。

不论你如何设置这些变量,所有用户都应至少知道每个编辑器的基本命令,以防另一个程序突然在一个关键文件上运行一个编辑器。

nano

stdin  stdout  - file  -- opt  --help  --version

nano [options] [files]

Nano是一个具有基本功能的文本编辑器。它默认包含在许多Linux发行版中,而更强大的编辑器如emacs和vim可能不包含。要调用nano,输入

→ nano

Nano的命令通常包括按住控制键和输入一个字母,如^o保存和^x退出。Nano在其编辑窗口底部显示常用命令,尽管其中一些词汇有点晦涩。(例如,nano使用“WriteOut”一词表示“保存文件。”)其他命令涉及元键,通常是Escape键或Alt键。Nano自己的文档用M-(如M-F表示“使用元键并键入F”)表示元键,所以我们也将使用这种表示方法。关于基本按键,参见[表1]。要获取更多文档,请访问http://nano-editor.org

emacs

stdin  stdout  - file  -- opt  --help  --version

emacs [options] [files]

emacs是一个极其强大的编辑环境,拥有数千个命令,加上一个完整的编程语言来定义你自己的编辑功能。要在新的X窗口中调用emacs,运行:

→ emacs

要在已存在的shell窗口中运行:

→ emacs -nw

现在,要调用内置的emacs教程,键入^h t

大多数emacs键击命令涉及控制键(如^F)或元键,通常是Escape键或Alt键。emacs自己的文档用M-(如M-F表示“使用元键并键入F”)表示元键,所以我们也将使用这种表示方法。关于基本按键,参见[表1]。

vim

stdin  stdout  - file  -- opt  --help  --version

vim [options] [files]

vim是旧的标准Unix编辑器vi的增强版本。要在新的X窗口中调用编辑器,运行:

→ gvim

要在已存在的shell窗口中运行:

→ vim

要运行vim教程,运行:

→ vimtutor

vim是一个基于模式的编辑器。它通常操作两种模式,插入命令,你在编辑时必须在它们之间切换。插入模式是以通常的方式输入文本,而命令模式是用于删除文本、复制/粘贴和其他操作。关于正常模式中的基本按键,参见[表1]。

任务emacsnanovim
键入文本直接键入直接键入如果需要,切换到插入模式,通过键入i,然后键入任何文本
保存并退出^x^s然后 ^x^c^o然后 ^x:wq
退出而不保存^x^c在被问到是否保存缓冲区时选择“否”^x在被问到是否保存时选择“否”:q!
保存^x^s^o:w
另存为^x^w^o, 然后输入一个文件名:w 文件名
撤销^/ 或 ^x uM-uu
挂起编辑器(不在X窗口中)^z^z^z
切换到插入模式(N/A)(N/A)i
切换到命令模式(N/A)(N/A)ESC
切换到命令行模式M-x(N/A):
中止正在进行的命令^g^cESC
向前移动^f 或 右箭头^f 或 右箭头l 或 右箭头
向后移动^b 或 左箭头^b 或 左箭头h 或 左箭头
向上移动^p 或 上箭头^p 或 上箭头k 或 上箭头
向下移动^n 或 下箭头^n 或 下箭头j 或 下箭头
移动到下一个单词M-f^SPACEBARw
移动到上一个单词M-bM-SPACEBARb
移动到行的开头^a^a0
移动到行的末尾^e^e$
向下移动一个屏幕^v^v^f
向上移动一个屏幕M-v^y^b
移动到文档的开头M-<M-\gg
移动到文档的末尾M->M-/G
删除下一个字符^d^dx
删除上一个字符BACKSPACEBACKSPACEX
删除下一个单词M-d(N/A)de
删除上一个单词M-BACKSPACE(N/A)db
删除当前行^a^k^kdd
删除至行末^k...D
定义区域(输入此快捷键以标记区域的开始,然后移动光标到所需区域的末尾)^SPACEBAR^^ (control caret)v
剪切区域^w^kd
复制区域M-wM-^y
粘贴区域^y^up
获取帮助^h^g:help
查看手册^h i^g:help

推荐阅读


··································

你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存